home *** CD-ROM | disk | FTP | other *** search
/ Whiteline: Alpha / Whiteline Alpha.iso / progtool / forth / gem / supergem.scr < prev    next >
Encoding:
Text File  |  1994-09-22  |  16.0 KB  |  1 lines

  1. \\                     *** SUPERGEM.SCR ***            16sep86we                                                                In diesem File soll eine GEM-Library aufgebaut werden, die      komfortablere Routinen als die Standardbefehle mit Ihren un-    übersehbaren Parametern zur Verfügung stellt.                                                                                   Bei der Entwicklung des Editors sind bereits einige solche      Routinen entstanden.                                                                                                            Für Anregungen gerade in diesem Bereich sind wir dankbar....                                                                                                                                                                                                                                                                                                                                                                                                    \ GEM-Library Loadscreen                               02nov86we                                                                Onlyforth  GEM also                                                                                                             \needs scr>mem  $10 loadfrom gem\vdi.scr                                                                                        Onlyforth  GEM also definitions                                                                                                 1 4 +thru                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                       \ Resource Trees and objects                           02sep86we                                                                : tree!   ( tree -- )                                              0 swap  rsrc_gaddr  objc_tree 2! ;                                                                                           : objc_gaddr   ( object# -- laddr )                                &24 *  extend  objc_tree 2@  d+  ;                                                                                           : text_gaddr   ( object# -- laddr )                                objc_gaddr   &12 extend  d+  l2@   l2@ ;                                                                                     : alert   ( n -- button )                                          show_c                                                          5 swap rsrc_gaddr addrin 2!  1 intin !  &52 1 1 1 AES           hide_c ;                                                                                                                     \ Move text to Objects and back                        02nov86we                                                                : putstring   ( addr object# -- )      >r                          count  under >r   >absaddr   r>  r@ text_gaddr  rot  lcmove     0 swap  extend  r> text_gaddr  d+ lc! ;                                                                                      : getstring   ( object# addr -- )      >r  text_gaddr              0  BEGIN  >r 2dup r@ extend d+ lc@  WHILE  r> 1+  REPEAT  r>    r>  2dup c!  1+ >absaddr  rot  lcmove ;                                                                                      : getnumber   ( object# -- d )                                     pad getstring   pad count bl skip  swap 1-   dup >r  c!         r@ capitalize  c@  IF  r> number  ELSE  rdrop 0 0  THEN ;                                                                    : putnumber   ( d object# -- )     >r                              <# #s #>  over 1- c!  1-   r> putstring ;                    \ init_object select deselect                          02nov86we                                                                Create little  &320 , &200 , &10 , &10 ,                        Create big     8 allot                                                                                                          : init_object   ( -- )                                              &320 &200 &10 &10 little 4!  form_center big 4! ;                                                                           : state_gaddr  ( object -- laddr )    objc_gaddr  &10. d+ ;                                                                     : select       ( object -- )          1 swap state_gaddr l! ;   : deselect     ( object -- )          0 swap state_gaddr l! ;                                                                                                                                                                                                                                                                   \ show_object hide_object objc_setpos objc_getwh       12aug86we                                                                : show_object   ( -- )   init_object                               big 4@  scr>mem1   1  little 4@  big 4@  form_dial              0 ( install) 3 ( depth)  big 4@ objc_draw show_c ;                                                                           : hide_object   ( -- )   hide_c                                    2  little 4@  big 4@  form_dial   big 4@  mem1>scr ;                                                                         : objc_setpos   ( x y object# -- )                                 dup >r  objc_gaddr  $0.12 d+ l!   r> objc_gaddr $0.10 d+ l! ;                                                                : objc_getwh    ( object# -- width height )                        dup  objc_gaddr  $0.14 d+ l@  swap objc_gaddr $0.16 d+ l@ ;                                                                                                                                  \                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               \                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                               \ GEM-Library Loadscreen                               16sep86we                                                                nimmt GEM in die Suchordnung auf (Fehlermeldung, falls nicht     vorhanden)                                                     wird für die Rasteroperationen gebraucht, die den Bildschirm-    inhalt schnell restaurieren.                                   Alle folgenden Definitionen werden Bestandteil des Vokabulars    GEM                                                            falls die Mausroutinen noch nicht vorhanden sind.                                                                                                                                                                                                                                                                                                                                                                                                                                                                               \ Resource Trees and objects                           16sep86we                                                                speichert die Kennummer eines Trees in der FORTH-internen        Variablen objc_tree ab. Muß immer vor der weiteren Arbeit mit   Objekten geschehen.                                            liefert die 32-Bit-Adresse des Objekts mit der Nummer object#.   tree! muß vorher aufgerufen worden sein.                                                                                       laddr ist die 32-Bit-Adresse des 0-terminated Strings mit der    Objektnummer object#.                                                                                                          n ist die Objektnummer der Alertbox, button ist der vom Benutzer betätigte Knopf. Die Maus wird vorher eingeschaltet und hinter- her glöscht.                                                                                                                                                                                   \ Move text to Objects and back                        16sep86we                                                                addr ist die Adresse eines 0-terminated Strings innerhalb des    FORTH-Systems. Dieser wird in das Objekt object# transportiert.                                                                                                                                Der Text im Objekt object# wird nach addr transportiert.                                                                                                                                                                                                        wie oben, jedoch wir der String in eine doppelt genaue Zahl      gewandelt. Ist der String leer wird 0.0 zurückgegeben. Ein      Abbruch erfolgt, wenn der String nicht gewandelt werden kann.                                                                  wandelt die doppelt genaue Zahl d in einen 0-terminated String   und transportiert ihn in das Objekt object#.                   \ init_object select deselect                          16sep86we                                                                little beschreibt ein kleines Rechteck in Bildschirmmitte.      big    beschreibt ein Rechteck in der Größe des Objekts.                                                                        initialisiert little und big auf die Größen des darzustellenden  Objekts. Die Koordinaten des Objekts werden in der Resource (!) so geändert, daß es auf dem Bildschirm zentriert erscheint.    laddr ist die Langadresse des Statuswortes des Objekts object#. setzt den Status des Objekts object# auf selected (revers).     setzt den Status des Objekts object# auf deselected (normal).                                                                                                                                                                                                                                                                                                                                   \ show_object hide_object objc_setpos objc_getwh       16sep86we                                                                zeichnet das Objekt auf dem Bildschirm und rettet den Hinter-    grund. Die Treenummer des Objekts muß mit tree! gesetzt sein.   Das Objekt wird mit (bis zu) drei Unterebenen gezeichnet.       Die Maus wird eingeschaltet.                                   entfernt das Objekt vom Bildschirm und restauriert den Hinter-   grund.                                                                                                                         x und y sind die Koordinaten der oberen rechten Ecke, an der     das Objekt object# auf dem Bildschirm erscheinen soll.                                                                         width und height sind Breite und Höhe des Objekts object#.